// game-sub-context.js - 游戏子包环境启动文件
// 这个文件专门用于游戏子包环境，避免使用Page API

import Main from './js/main'

console.log('游戏子包环境启动...');

// 检查环境
if (typeof GameGlobal === 'undefined') {
  console.error('GameGlobal不可用，无法在游戏子包环境中运行');
} else {
  console.log('GameGlobal可用，开始初始化游戏');
  
  // 初始化游戏
  initGame();
}

function initGame() {
  try {
    console.log('开始初始化游戏...');
    
    // 创建Canvas
    const canvas = wx.createCanvas();
    const ctx = canvas.getContext('2d');
    
    // 设置Canvas尺寸
    const systemInfo = wx.getSystemInfoSync();
    const screenWidth = systemInfo.screenWidth;
    const screenHeight = systemInfo.screenHeight;
    const pixelRatio = systemInfo.pixelRatio || 1;
    
    canvas.width = screenWidth * pixelRatio;
    canvas.height = screenHeight * pixelRatio;
    ctx.scale(pixelRatio, pixelRatio);
    
    console.log('Canvas初始化成功:', {
      width: canvas.width,
      height: canvas.height,
      pixelRatio: pixelRatio
    });
    
    // 设置全局Canvas
    GameGlobal.canvas = canvas;
    
    // 创建游戏实例
    const gameInstance = new Main(canvas, ctx);
    
    // 设置触摸事件
    setupTouchEvents(canvas, gameInstance);
    
    console.log('游戏初始化完成');
    
  } catch (error) {
    console.error('游戏初始化失败:', error);
    showError('游戏启动失败，请重试');
  }
}

function setupTouchEvents(canvas, gameInstance) {
  if (!canvas || !gameInstance) return;
  
  try {
    // 检查Canvas是否支持addEventListener
    if (typeof canvas.addEventListener === 'function') {
      // 使用标准的addEventListener方法
      canvas.addEventListener('touchstart', (e) => {
        e.preventDefault();
        if (gameInstance.handleTouch) {
          const touch = e.touches[0];
          const rect = canvas.getBoundingClientRect();
          const x = touch.clientX - rect.left;
          const y = touch.clientY - rect.top;
          gameInstance.handleTouch(x, y);
        }
      });
      
      canvas.addEventListener('touchmove', (e) => {
        e.preventDefault();
      });
      
      canvas.addEventListener('touchend', (e) => {
        e.preventDefault();
      });
      
      console.log('使用标准addEventListener设置触摸事件');
    } else {
      // 使用微信小游戏的触摸事件API
      console.log('使用微信小游戏触摸事件API');
      
      // 监听触摸开始事件
      wx.onTouchStart((e) => {
        if (gameInstance.handleTouch && e.touches && e.touches.length > 0) {
          const touch = e.touches[0];
          const x = touch.clientX;
          const y = touch.clientY;
          gameInstance.handleTouch(x, y);
        }
      });
      
      // 监听触摸移动事件
      wx.onTouchMove((e) => {
        // 防止页面滚动
      });
      
      // 监听触摸结束事件
      wx.onTouchEnd((e) => {
        // 触摸结束处理
      });
      
      console.log('使用wx.onTouchStart设置触摸事件');
    }
  } catch (error) {
    console.error('设置触摸事件失败:', error);
    // 尝试使用wx.onTouchStart作为备选方案
    try {
      wx.onTouchStart((e) => {
        if (gameInstance.handleTouch && e.touches && e.touches.length > 0) {
          const touch = e.touches[0];
          const x = touch.clientX;
          const y = touch.clientY;
          gameInstance.handleTouch(x, y);
        }
      });
      console.log('使用备选方案设置触摸事件');
    } catch (fallbackError) {
      console.error('备选方案也失败:', fallbackError);
    }
  }
}

function showError(message) {
  try {
    wx.showToast({
      title: message,
      icon: 'none',
      duration: 3000
    });
  } catch (error) {
    console.error('显示错误提示失败:', error);
  }
}

// 导出游戏实例（如果需要）
export { initGame }; 